Bash 脚本:嵌套 if 语句

您所在的位置:网站首页 linux 语句 Bash 脚本:嵌套 if 语句

Bash 脚本:嵌套 if 语句

2024-06-14 11:29| 来源: 网络整理| 查看: 265

Bash 脚本:嵌套 if 语句

Bash 脚本中的 if 语句是使用条件语句的最基本方法。

简而言之,这些条件语句定义“如果条件为真,则执行该操作,否则执行此操作”。当您将 if 语句嵌套在一起时,或者换句话说,将一个 if 语句放在另一个 if 语句中时,它们会变得更加复杂。您可以将巢穴建造得有多深,尽管它会变得越来越复杂。

在本教程中,您将学习如何在 Linux 系统上的 Bash 脚本中使用嵌套 if 语句。检查下面的一些示例,了解嵌套 if 语句的工作原理。

在本教程中您将学习:

如何在 Bash 脚本中构建嵌套 if 语句

在您自己的系统上尝试的嵌套 if 语句的真实示例

嵌套 if 语句的结构

首先,让我们回顾一下 Bash 脚本中嵌套 if 语句的结构。这将使您熟悉语法,以便您可以轻松解释接下来的示例,并最终从头开始编写自己的示例。

#!/bin/bash if EXPRESSION1; then STATEMENT1 if EXPRESSION2; then STATEMENT2 fi fi

这是嵌套 if 语句的最基本形式。让我们回顾一下这里发生的事情:

第一个 if 语句检查表达式是否为 true。如果是,则继续执行第一个语句。

在第一个语句之后,脚本检查另一个表达式是否为 true。如果是,则继续执行第二条语句。

但是,如果第二个 if 语句的条件不匹配,则仅执行第一个语句,然后脚本会从整个嵌套的 if 中转义。

如果第一个表达式不匹配,则无法进入嵌套的 if 语句来检查第二个条件或任何其他后续条件。

请记住,第二个 if 语句需要在第一个语句之前终止,因为它是嵌套的

如果其中任何一开始没有意义,请不要担心。查看下面的示例将帮助您更好地形象化该过程。

Bash 脚本:嵌套 if 语句示例

查看下面的示例,了解如何在 Bash 脚本中使用嵌套的 if 语句。

注意使用 case 语句通常比使用一堆嵌套的 if 语句更有利。

下面的脚本将首先检查是否是工作日(周一至周五)。如果是,它会检查现在是早上还是晚上(AM 或 PM)。但是,如果由于周末(周六或周日)而未满足第一个 if 语句,则第二个 if 语句将根本不会执行。

#!/bin/bash # Determine the day of week and store it inside the $day variable day=$(date +"%u") # Determine if it is morning or night and store it in the $time variable time=$(date +"%p") # Check if the day of the week is between 1-5 (Mon-Fri) if [ $day -le 5 ]; then # if it is a weekday, echo the text below echo "today is a weekday" # now determine if it is morning or night time if [ $time == "AM" ]; then echo "it is morning" else echo "it is night" fi else # if the first condition was not met, execute the following command echo "today is the weekend!" fi

这是我们执行脚本时的输出:

$ date Fri 25 Feb 2022 09:55:14 PM EST $ ./test.sh today is a weekday it is night

嵌套 if 的要点是,仅当第一个 if 语句为 true 时才使用第二个 if 语句。在这种情况下,我们的脚本仅在首先确定一周中的某一天是周一至周五时才检查一天中的时间。我们在脚本中留下了注释,以便更容易理解。

结束语

在本教程中,您学习了如何在 Linux 系统上的 Bash 脚本中使用嵌套 if 语句。这种类型的条件语句有其特殊用途,因为通常最好使用 case 语句。如果您的嵌套只有两个 if 语句深,那么通常很容易维护和理解正在发生的事情,正如我们在此处的示例中所示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3